#include <ros/ros.h>
#include <std_msgs/Float64.h>

void myCallback(const std_msgs::Float64&message_holder)
{
	//订阅的真正工作是在这，实现打印
	//每次 “publisher”上发布消息之后，它都会唤醒
	ROS_INFO("received value is : %f",message_holder.data);

}

int main(int argc , char **argv)
{
    ros::init (argc,argv,"minimal_subscriber");
    //这个节点名称 minimal_pubscriber;

    ros::NodeHandle n;
    //创建一个NodeHandle 对象，开始网络的通信;

    ros::Subscriber my_subscriber_object = n.subscribe("publisher1",1,myCallback);
    //实例化一个ros::Subscriber 对象
    //subscriber 是订阅的话题名称
    // 1是队列的大小，如果回调函数无法跟上发布的数据的频率，数据就需要排队。
    // 如果回调函数 与发布保持一致，消息会被新的消息覆盖
    // 每到新消息发布到publisher时，“myCallback”都会唤醒

    //需要对 myCallback 进行具体的功能撰写

    ros::spin();
    //这是一个本质的“while（1）”，他在新数据到达时强制刷新回调函数，更新话题的消息数据，主程序也一直在这存在（挂着）

    return 0;
    //由于一直挂在上一条语句，程序不可能变化。除非roscore崩溃

}
